新規購入したRaspberry Piをセットアップする
用意する物
Raspberry Pi本体
電源
5V=3A推奨
USB周り使わないなら5V=2.4Aでも動くらしい
5V=3Aのアダプタなんて中々ないしなーと思ってたけど,秋月とかスイッチサイエンスに売ってたのでこれを使った
microSDHC
最低限16GBは欲しい
32GBあれば余裕
microSDXCを買うとフォーマットが面倒
普通にmicroSDHCを買ったほうがいい.
ケース (必要なら)
今回は常時起動で使うのでファンとかヒートシンクもついてるこれを買った
GPIOで動くファンはshutdownコマンドで電源落としてもUSB Type-Cの電源を抜かないと回り続ける
気になる人はスイッチで完全に電源を切れるアダプタ付きのを買ったほうがいい気がする
LANケーブル (必要なら)
有線で作業する場合のみ必要
後で書くけどwpa_supplicant.confを最初に作れば無線 LAN だけでセットアップ完結出来るし別になくてもいい
RaspbianをmicroSDに焼く
RaspbianをダウンロードしてmicroSDに焼く
デスクトップ用途では使わないのでRaspbian Liteをダウンロードした.
本家からダウンロードすると遅すぎて一生終わらないのでJAISTからダウンロードするといい
ダウンロードしたzipファイルを展開してimgファイルをmicroSDに書き込む
自分はmacOSを使ってるのでddコマンドを使って書き込んだ
diskutil list を使って microSD の場所を調べておく
$ diskutil list
フォーマットする
$ diskutil eraseDisk MS-DOS rpi /dev/disk2
$ diskutil umount /dev/disk2
書き込む
$ sudo dd bs=1m if=2020-02-13-raspbian-buster-lite.img of=/dev/rdisk2
書き込み終わったらmicroSDの/bootにsshという名前の空ファイルを作っておく
/boot/sshがあるとSSHがオンになる
無線LANを使う場合は/bootにwpa_supplicant.confファイルを作っておく
起動時にWi-Fiに繋がる.
code:text
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="APのSSID"
psk="APのパスワード"
}
SSHで接続する
ルーターの管理画面なり何なりでローカルのIPアドレス調べてSSHで接続する
初期のユーザー/パスワードはpi/raspberry
$ ssh pi@192.168.0.xxx
raspi-config を使って初期設定
ファイルシステムの拡張
ローケル,タイムゾーンの変更
hostnameの変更
などをする
$ sudo raspi-config
終わったら再起動
aptのミラーを設定
初期設定のraspbian.raspberrypi.orgでもミラーに転送してくれるけど,最初から日本のサーバーに設定しておく
/etc/apt/sources.listを編集
code:text
# 初期のはコメントアウトしておく
# JAIST あたりを追加する
IPアドレスを固定
いくつか方法がある
/etc/dhcpcd.confにIPアドレスを書き込む
ルーター側でIPアドレスを固定する
dhcpcd.conf に書く場合は以下のような感じに
code:text
# 有線
interface eth0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
# 無線
interface wlan0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
ユーザー名をpiから変更する
サーバー用途でpi/raspberryのまま使うのは最悪
ユーザー名とパスワードを変更する
アカウント削除で説明してる記事もあるけど
既に pi ユーザーで作ったファイルがあったら面倒
変更の方がいい
piユーザーでログインしたままユーザー名を変えるのは不可能なので,一旦作業用ユーザーを作って実行する
$ sudo useradd -M tmp
$ sudo gpasswd -a tmp sudo
$ sudo passwd tmp
一旦ログアウトしてtmpでログインする.
$ sudo usermod -l newuser pi
$ sudo usermod -d /home/newuser -m newuser
$ sudo groupmod -n newuser pi
ログアウトしてnewuserでログインし直し, 作業用ユーザーを削除する
$ sudo userdel tmp
newuserのパスワードを変える.
$ sudo passwd newuser
鍵を設定する
SSHのログインで毎回パスワードを打つのは大変
公開鍵認証でログイン出来るようにする
ホスト側でssh-keygenを実行して鍵を作る.
$ ssh-keygen -t ed25519
ラズパイにSSHの設定ディレクトリとファイルを作る
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
ホストのid_ed25519.pubをラズパイの~/.ssh/authorized_keysに追加する.
ssh-copy-idを使うと楽にコピーできていい.
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub username@192.168.0.xxx
ホスト側の~/.ssh/configを設定しておく
code:text
Host raspi4
Hostname 192.168.0.xxx
Port 22
User username
IdentityFile ~/.ssh/raspi/id_ed25519
ここで一旦,公開鍵認証でログイン出来るか試しておく
設定出来てないままパスワードログインを無効化すると完全に終わるので一回試す
sshdの設定
ラズパイ側の/etc/ssh/sshd_configを編集する
root でのログインを無効化
PermitRootLogin no
空パスワードの無効化
PermitEmptyPasswords no
パスワード認証の無効化
PasswordAuthentication no
ポートの変更
Port 任意のポート番号
終わったらsudo systemctl restart sshdでsshdを再起動
一旦SSHを切断して新しい設定でログイン
スワップの無効化
デフォルトでは100MBほどスワップ領域が確保される
あってもまず使うことないし,使っても遅いしでメリットないので切っておく
$ sudo swapoff --all
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl disable dphys-swapfile
/tmpと/var/tmpをtmpfsにする
/tmpとかでデカい容量使わないなら実行しておくといい.
/etc/fstabを編集し,/tmpと/var/tmpをtmpfsにする
$ sudo vim /etc/fstab
code:text
tmpfs /tmp tmpfs defaults,size=32m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
終わったら再起動